<?php
/**
 * @file: SimpleDBApi.php
 * @brief: 这个一个用来偷懒的数据库浅层封装
 * @author: enic errorcpp@qq.com
 * @version: 0.0.0.1
 * @date: 2018-02-09
 */
 
/*
        // 可以尝试再把输出参数封装一道
        $name = '成都市';    
        $stmt = $db->prepare("CALL pro_test(?,@sp_result);");  
        $stmt->bindParam(1, $name);  
        $stmt->execute ();  
        $outputArray = $db->query("select @sp_result")->fetch(PDO::FETCH_ASSOC);
        
        // 另外一种绑定方式
        $stmt = $db->prepare("CALL pro_test(:name,@sp_result);");
		$stmt->execute (array(':name'=>$name));
		$outputArray = $db->query("select @sp_result")->fetch(PDO::FETCH_ASSOC);
		print_r($outputArray["@sp_result"]);
 */

/**
 *  @brief: 简单数据库API访问接口
 */
interface SimpleDBApi
{
    /**
     *  @brief: 发起连接
     *  
     *  @param {string} $strIp:  服务器地址
     *  @param {uint8_t} $nPort: 服务器端口
     *  @param {string} $strDatabase: 数据库
     *  @param {string} $strUserName: 帐号
     *  @param {string} $strPassword: 密码
     *
     *  @return {bool}: 结果
     */
    public function Connect($strIp, $nPort, $strDatabase, $strUserName, $strPassword);
    
    /**
     *  @brief: 生成预sql处理对象
     *  
     *  @param {string} $strSQL: 带执行的sql语句（可以含有?参数等待绑定）
     *
     *  @return {bool}: 结果 
     */
    public function Prepare($strSQL);
    
    /**
     *  @brief: 参数绑定
     *  
     *  @param {int} $nNum: 第几个参数
     *  @param {any} $param: 绑定的值
     *  
     *  @return {bool}: 结果
     */
    public function BindParam($nNum, $param);
    
    /**
     *  @brief: 执行生成的预处理
     *  
     *  @return {true}: 结果
     */
    public function Execute();
    
    /**
     *  @brief: 返回下一行数据
     */
    public function Fetch();
}





